#pragma once
class MarketInterface 

class MarketObserver {
public:
   // this method will be called each time, when a market changes
   virtual void marketChanged(MarketInterface * market) = 0;
   friend class MarketInterface;
private:
   void inform (MarketInterface * market) {
      marketChanged(market);
      if (next) next->inform(market);
   };
   MarketObserver * next;
};


class TraderInterface : public MarketObserver {
public:
   // adds new marcket to the Coin Manager
   bool addMarket(MarketInterface & newMarket);

   void allowRealTrading();
   void forbidRealTrading();
protected:

};
